import {
  AccountParams,
  DeptListItem,
  MenuParams,
  RoleParams,
  TestPageParams,
  RolePageParams,
  MenuListGetResultModel,
  DeptListGetResultModel,
  AccountListGetResultModel,
  RolePageListGetResultModel,
  RoleListGetResultModel,
  TestListGetResultModel,
} from "./model/systemModel"
import { defHttp } from "/@/utils/http/axios"

enum Api {
  AccountList = "/mock/system/getAccountList",
  IsAccountExist = "/mock/system/accountExist",
  DeptList = "/mock/system/getDeptList",
  setRoleStatus = "/mock/system/setRoleStatus",
  MenuList = "/mock/system/getMenuList",
  RolePageList = "/mock/system/getRoleListByPage",
  DemoTableList = "/mock/system/getDemoTableListByPage",
  TestPageList = "/mock/system/getTestListByPage",
  GetAllRoleList = "/mock/system/getAllRoleList",
}

export const getAccountList = (params: AccountParams) => defHttp.get<AccountListGetResultModel>({ url: Api.AccountList, params })

export const getDeptList = (params?: DeptListItem) => defHttp.get<DeptListGetResultModel>({ url: Api.DeptList, params })

export const getMenuList = (params?: MenuParams) => defHttp.get<MenuListGetResultModel>({ url: Api.MenuList, params })

export const getRoleListByPage = (params?: RolePageParams) => defHttp.get<RolePageListGetResultModel>({ url: Api.RolePageList, params })

export const getAllRoleList = (params?: RoleParams) => defHttp.get<RoleListGetResultModel>({ url: Api.GetAllRoleList, params })

export const setRoleStatus = (id: number, status: string) => defHttp.post({ url: Api.setRoleStatus, params: { id, status } })

export const getTestListByPage = (params?: TestPageParams) => defHttp.get<TestListGetResultModel>({ url: Api.TestPageList, params })

export const getDemoTableListByPage = (params) => defHttp.get({ url: Api.DemoTableList, params })

export const isAccountExist = (account: string) => defHttp.post({ url: Api.IsAccountExist, params: { account } }, { errorMessageMode: "none" })
